// 封装数据操作模块
// 1. 导入mysql的包
const mysql = require('mysql')

// 导入配置文件(给mysql对象起别名)
const { mysql: dbconfig } = require('../config')

// 2. 创建连接
const con = mysql.createConnection(dbconfig)
// 3. 连接
con.connect()
// 4. 操作
// 4.1 获取所有的数据
// function getAll(sql, callback) {
//   // sql = 'select * from student'
//   // callback = function (abc) {console.log(abc)}
//   con.query(sql, function (err, data) {
//     if (err) throw err
//     // callback(data) --> 调用callback函数
//     //(function (abc) {console.log(abc)})(data)
//     callback(data)
//   })
// }
function getAll(sql) {
  return new Promise((resolve, reject) => {
    con.query(sql, function (err, data) {
      if (err) reject(err)

      resolve(data)
    })
  })
}
// 4.2 根据id获取单个数据
function getById(sql) {
  return new Promise((resolve, reject) => {
    con.query(sql, function (err, data) {
      if (err) reject(err)

      if (data) {
        data[0] ? resolve(data[0]) : resolve(null)
      } else {
        resolve(null)
      }
    })
  })
}
// 4.3 写入操作(增/删/改)
function exec(sql) {
  return new Promise((resolve, reject) => {
    con.query(sql, function (err, data) {
      if (err) reject(err)

      resolve(data)
    })
  })
}
// 5. 导出一个对象
module.exports = {
  getAll,
  getById,
  exec,
}

// getAll('select * from student', function (abc) {
//   console.log(abc)
// })

// getAll('select * from student')
//   .then((res) => {
//     console.log(res)
//   })
//   .catch((err) => {
//     console.log(err)
//   })
